When the bounding box size is 0 during allocation (which happens right
after creating a window for example), we're doing a division by zero and
end up with a NaN scale. This ends up making the childBox NaN, which
triggers an error in Clutters allocation machinery.
So fix that and fall back to a scale of 1 in case the bounding box is
empty.
https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1320
vfunc_allocate(container, box) {
// If the scale isn't 1, we weren't allocated our preferred size
// and have to scale the children allocations accordingly.
- const scaleX = box.get_width() / this._boundingBox.get_width();
- const scaleY = box.get_height() / this._boundingBox.get_height();
+ const scaleX = this._boundingBox.get_width() > 0
+ ? box.get_width() / this._boundingBox.get_width()
+ : 1;
+ const scaleY = this._boundingBox.get_height() > 0
+ ? box.get_height() / this._boundingBox.get_height()
+ : 1;
const childBox = new Clutter.ActorBox();